home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue38 / BuildPro / MY PROJECT 1 / Main.pas < prev    next >
Pascal/Delphi Source File  |  1998-04-22  |  4KB  |  169 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses Windows, Classes, Graphics, Forms, Controls, Menus,
  6.   Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls;
  7.  
  8. type
  9.   TMainForm = class(TForm)
  10.     LogoAppMenu: TMainMenu;
  11.     FileMenu: TMenuItem;
  12.     FileNewItem: TMenuItem;
  13.     FileOpenItem: TMenuItem;
  14.     FileSaveItem: TMenuItem;
  15.     FileSendItem: TMenuItem;
  16.     FileExitItem: TMenuItem;
  17.     OpenDialog: TOpenDialog;
  18.     SaveDialog: TSaveDialog;
  19.     Help1: TMenuItem;
  20.     AboutItem: TMenuItem;
  21.     SpeedPanel: TPanel;
  22.     OpenBtn: TSpeedButton;
  23.     SaveBtn: TSpeedButton;
  24.     ExitBtn: TSpeedButton;
  25.     StatusBar: TStatusBar;
  26.     RichEdit1: TRichEdit;
  27.     SendBtn: TSpeedButton;
  28.     procedure FormCreate(Sender: TObject);
  29.     procedure FileExit(Sender: TObject);
  30.     procedure FileNew(Sender: TObject);
  31.     procedure FileOpen(Sender: TObject);
  32.     procedure FileSave(Sender: TObject);
  33.     procedure FileSaveAs(Sender: TObject);
  34.     procedure FileSend(Sender: TObject);
  35.     procedure About(Sender: TObject);
  36.     procedure ShowHint(Sender: TObject);
  37.   private
  38.     FFileName: String;
  39.   public
  40.     { Public declarations }
  41.   end;
  42.  
  43. var
  44.   MainForm: TMainForm;
  45.  
  46. implementation
  47.  
  48. uses SysUtils, Mapi, AboutMyProduct, Debug;
  49.  
  50. {$R *.DFM}
  51.  
  52. resourcestring
  53.   rsUntitled = 'Untitled';
  54.   rsOverwrite = 'OK to overwrite %s';
  55.   rsSendError = 'Error sending mail';
  56.  
  57. procedure TMainForm.FormCreate(Sender: TObject);
  58. var
  59.   ResourceData: TResourceStream;
  60. begin
  61.   Application.OnHint := ShowHint;
  62.  
  63.   // Extract default untitled file.
  64.   ResourceData := TResourceStream.Create (HInstance, 'DefaultUntitled', RT_RCDATA);
  65.   try
  66.     ResourceData.SaveToFile (ExtractFilePath (Application.ExeName) + 'Untitled.txt');
  67.   finally
  68.     ResourceData.Free;
  69.   end;
  70.  
  71.   FileNew (Self);
  72. end;
  73.  
  74. procedure TMainForm.FileNew(Sender: TObject);
  75. begin
  76.   FFileName := rsUntitled;
  77.   RichEdit1.Lines.LoadFromFile (ExtractFilePath (Application.ExeName) + 'Untitled.txt');
  78.   RichEdit1.Modified := False;
  79. end;
  80.  
  81. procedure TMainForm.FileOpen(Sender: TObject);
  82. begin
  83.   if OpenDialog.Execute then
  84.   begin
  85.     RichEdit1.Lines.LoadFromFile(OpenDialog.FileName);
  86.     FFileName := OpenDialog.FileName;
  87.     RichEdit1.SetFocus;
  88.     RichEdit1.Modified := False;
  89.     RichEdit1.ReadOnly := ofReadOnly in OpenDialog.Options;
  90.   end;
  91. end;
  92.  
  93. procedure TMainForm.FileSave(Sender: TObject);
  94. begin
  95.   if FFileName = rsUntitled then
  96.     FileSaveAs(Sender)
  97.   else
  98.   begin
  99.     RichEdit1.Lines.SaveToFile(FFileName);
  100.     RichEdit1.Modified := False;
  101.   end;
  102. end;
  103.  
  104. procedure TMainForm.FileSaveAs(Sender: TObject);
  105. begin
  106.   if SaveDialog.Execute then
  107.   begin
  108.     if FileExists(SaveDialog.FileName) then
  109.       if MessageDlg(Format (rsOverwrite, [SaveDialog.FileName]),
  110.         mtConfirmation, mbYesNoCancel, 0) <> idYes then Exit;
  111.     RichEdit1.Lines.SaveToFile(SaveDialog.FileName);
  112.     FFileName := SaveDialog.FileName;
  113.     RichEdit1.Modified := False;
  114.   end;
  115. end;
  116.  
  117. procedure TMainForm.FileSend(Sender: TObject);
  118. var
  119.   MapiMessage: TMapiMessage;
  120.   MError: Cardinal;
  121.   MessageText: String;
  122. begin
  123.   // This will be compiled out if debug information is turned off.
  124.   if DebugOn then begin
  125.     RichEdit1.Lines.Add ('Message created on ' + FormatDateTime ('hh:mm:ss ddd mmm yyyy', Now));
  126.   end;
  127.  
  128.   MessageText := RichEdit1.Lines.Text;
  129.  
  130.   with MapiMessage do begin
  131.     ulReserved := 0;
  132.     lpszSubject := nil;
  133.     lpszNoteText := PChar(MessageText);
  134.     lpszMessageType := nil; 
  135.     lpszDateReceived := nil; 
  136.     lpszConversationID := nil; 
  137.     flFlags := 0;
  138.     lpOriginator := nil; 
  139.     nRecipCount := 0;
  140.     lpRecips := nil; 
  141.     nFileCount := 0;
  142.     lpFiles := nil; 
  143.   end;
  144.   
  145.   MError := MapiSendMail(0, 0, MapiMessage, 
  146.     MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
  147.   if MError <> 0 then MessageDlg(rsSendError, mtError, [mbOK], 0);
  148. end;
  149.  
  150. procedure TMainForm.FileExit(Sender: TObject);
  151. var
  152.   X: Integer;
  153. begin
  154.   Close;
  155. end;
  156.  
  157. procedure TMainForm.About(Sender: TObject);
  158. begin
  159.   AboutBox.ShowModal;
  160. end;
  161.  
  162. procedure TMainForm.ShowHint(Sender: TObject);
  163. begin
  164.   StatusBar.SimpleText := Application.Hint;
  165. end;
  166.  
  167. end.
  168.  
  169.